As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
Information handling systems (IHSs) typically include a boot system such as, for example, a Basic Input/Output System (BIOS) and/or a Unified Extensible Firmware Interface (UEFI) that operates to perform hardware initialization during the boot process (power-on startup) and/or system reset, and to provide runtime services for operating systems and programs. For example, the boot system may initialize and test the IHS hardware components, load an operating system (OS) from memory or storage device, and/or perform a variety of other actions known in the art during a boot process. The boot system includes boot firmware that is stored in non-volatile memory, such as a Flash memory device or read only memory (ROM) device. Upon system start-up or restart, a boot loader or boot block is executed to access the boot firmware and execute the boot code. The boot firmware has control of the system platform during the pre-boot phase of the boot firmware, i.e., the duration of time between a system restart/reboot and the loading of the OS. Once the OS is loaded and running, however, platform control shifts to the operating system (i.e., during OS runtime).
A watchdog timer (WDT) is an electronic timer that may be used to detect and recover from information handling system malfunctions. For example, a watchdog timer may be initiated in response to the boot process and may be configured to expire or “trip” after a predetermined time period that is indicative of a problem with the boot process. In addition to monitoring the boot process, a WDT may be used to detect a variety of hardware and software errors. If a WDT expires (e.g., due to a hardware fault, program error, intentional hardware reset initiation, or time expiration), a time out signal may be generated, a WDT flag may be set, and corrective action(s) may be taken (e.g., reboot the system, shut down the system, log the error event, run diagnostics, etc.) to recover from the error.
There are generally two types of watchdog timers: hardware WDTs and software WDTs. A hardware WDT is a hardware based monitoring circuit (e.g., logic circuitry provided on the system platform) and has an associated WDT driver, which is executable to configure the monitoring circuit, stop the timer before it expires if the monitored task is completed, reset the timer before it expires for a monitored task running for longer than the WDT timeout value, and reset the timer and take corrective action(s) to recover from an error if the timer expires. During the boot process, the boot firmware has sole ownership of the hardware WDT before control or ownership of the hardware WDT is passed to the operating system during the boot firmware to OS transition. Once ownership passes to the operating system, the hardware WDT is reserved for sole use by the OS kernel and typically cannot be used by other user applications, services or drivers. In most cases, user applications/services/drivers are limited to software based WDT services provided by the operating system. While software WDTs can be used to monitor and recover from soft hangs (i.e., errors in program code that prevent the system from making forward progress), any OS hang condition, intentional termination of the software WDT, or OS fault may leave the system in an indefinite hung state. This may constitute an unacceptable amount of risk for some critical and/or security sensitive applications, services or drivers.